package com.draven.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.draven.entity.AccountPassword;

/**
 * 账号密码服务接口
 */
public interface AccountPasswordService {

    /**
     * 添加账号密码
     *
     * @param userId   用户ID
     * @param title    标题
     * @param username 账号
     * @param password 密码
     * @param url      网址
     * @param category 分类
     * @param remark   备注
     * @return ID
     */
    Long add(Long userId, String title, String username, String password, String url, String category, String remark);

    /**
     * 修改账号密码
     *
     * @param id       ID
     * @param userId   用户ID
     * @param title    标题
     * @param username 账号
     * @param password 密码
     * @param url      网址
     * @param category 分类
     * @param remark   备注
     */
    void update(Long id, Long userId, String title, String username, String password, String url, String category, String remark);

    /**
     * 删除账号密码
     *
     * @param id     ID
     * @param userId 用户ID
     */
    void delete(Long id, Long userId);

    /**
     * 获取账号密码详情
     *
     * @param id     ID
     * @param userId 用户ID
     * @return 账号密码信息
     */
    AccountPassword getDetail(Long id, Long userId);

    /**
     * 分页查询账号密码
     *
     * @param userId   用户ID
     * @param title    标题
     * @param username 账号
     * @param category 分类
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 分页结果
     */
    Page<AccountPassword> page(Long userId, String title, String username, String category, Integer pageNum, Integer pageSize);

    /**
     * 生成随机密码
     *
     * @param length 密码长度
     * @return 随机密码
     */
    String generatePassword(Integer length);
    
    /**
     * 统计用户的账号密码数量
     *
     * @param userId 用户ID
     * @return 账号密码数量
     */
    int countByUserId(Long userId);
} 